#include "../include/header.h"

/***
 * 请使用 read() 和 write() 系统调用在 C 语言中实现结构体的序列化和反序列化。给定一个结构体类型Person，包含姓名（最长30个字符）、
 * 年龄和性别。你需要实现以下功能：

1.序列化（写入）：将结构体 Person 对象写入到一个文件中。
2.反序列化（读取）：从文件中读取数据并恢复到结构体 Person 的对象中。
结构体类型定义如下：
typedef struct {
    char name[31];  // 姓名，包含一个结束字符
    int age;        // 年龄
    char gender;   // 性别（'M' = 男，'F' = 女）
}
*/

typedef struct {
    char name[31];  // 姓名，包含一个结束字符
    int age;        // 年龄
    char gender;   // 性别（'M' = 男，'F' = 女）
}Person;

void serialize(Person* buf){
	int fd = open("person", O_CREAT | O_TRUNC | O_WRONLY, 0664);
	ERROR_CHECK(fd, -1, "open");
	write(fd, buf, sizeof(Person));
}

void deserialization(){
	int fd = open("person", O_RDONLY);
	ERROR_CHECK(fd, -1, "open");

	Person p;
	read(fd, &p, sizeof(Person));
	printf("name:%s,age:%d,gender:%c", p.name, p.age, p.gender);

}


int main(int argc, char* argv[]){
	Person p = {"牢大", 40, 'M'};
	serialize(&p);

	deserialization();
	return 0;
}